package com.hdphone.zljutils.inter;

import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;

import androidx.annotation.NonNull;

/**
 * @author sq
 * @date 2020/10/19
 * @describe
 */
public interface IDateUtil {

    Calendar getCalendarInstance();

    /**
     * date转日期字符串（年月日）
     *
     * @param date 日期
     * @return 日期字符串
     */
    String date2String(Date date);

    /**
     * 返回日期字符串
     *
     * @param date   日期
     * @param format 要显示的日期格式
     * @return 解析后的字符串格式
     */
    String date2String(Date date, String format);

    /**
     * 返回星期几
     *
     * @return
     */
    int getWeekend();


    /**
     * 通过字符串解析还原日期
     *
     * @param date 日期字符串
     * @return date
     */
    Date string2Date(String date);

    /**
     * 通过字符串解析还原日期
     *
     * @param date   日期字符串
     * @param format 日期格式
     * @return date
     */
    Date string2Date(String date, String format);

    /**
     * 计算两个日期之间的天数
     *
     * @param early
     * @param late
     * @return 天数
     */
    int daysBetween(String early, String late);

    /**
     * 计算两个日期之间的小时数
     *
     * @param early
     * @param late
     * @return 小时数
     */
    int hoursBetween(String early, String late);

    /**
     * 获取当前日期
     *
     * @return
     */
    Date getCurrentDate();

    /**
     * 获取当前日期字符串格式
     *
     * @param format 格式
     * @return 字符串
     */
    String getCurrentDateString(String format);

    String getShortTime(String time);

    /**
     * 获取两个日期的间隔
     *
     * @param startDate 开始日期
     * @param endDate   结束日期
     * @return 间隔文案
     */
    String twoDateDistance(Date startDate, Date endDate);

    /**
     * 倒计时转换
     *
     * @param ms
     * @return
     */
    String countdownTransform(long ms);

    String distanceTodayOrYesterday(Date d1, Date d2);

    String getPeriodOfTime(Date date);

    String getHourMinuteWithDate(Date date);

    /**
     * 是否为今天
     *
     * @param time 时间戳
     * @return
     */
    boolean isToday(long time);

    /**
     * 将秒数转为毫秒
     *
     * @param time
     * @return
     */
    String changeTimeToM(int time);

    /**
     * 将秒数转为分秒
     *
     * @param time
     * @return
     */
    String changeTime(int time);

    String unitFormat(int i);

    Date getNowDate();

    String getNowString();

    String millis2String(final long millis, @NonNull final DateFormat format);

    String millis2String(final long millis, @NonNull String format);

    String millis2String(final long millis);
}
